﻿
Public Class Descompresor : Inherits Procesador

    Private ReadOnly _definiciones As New List(Of String)
    Private _parametro As String

    Public WriteOnly Property Parametro As String
        Set(value As String)
            _parametro = value
        End Set
    End Property

    Public Sub Descomprime(ByVal archivo As String, ByVal directorioSalida As String)
        If Not IO.Directory.Exists(directorioSalida) Then IO.Directory.CreateDirectory(directorioSalida)

        Dim inStartInfo As New ProcessStartInfo
        inStartInfo.WindowStyle = ProcessWindowStyle.Hidden
        inStartInfo.FileName = "cmd.exe"
        inStartInfo.Arguments = "/C " & GeneraParametros(_parametro, archivo, directorioSalida, Ejecutable)

        Main.Escribe(String.Format("Descomprimiendo ""{0}"" con {1}.",
                                   AlinearIzquierda(My.Computer.FileSystem.GetName(archivo), 70),
                                   Nombre))

        Process.Start(inStartInfo).WaitForExit()

        'My.Computer.FileSystem.DeleteFile(archivo)
    End Sub

    Public Sub NuevoTipoArchivoAdmitido(ByVal tipo As String)
        _definiciones.Add(tipo)
    End Sub

    Public Function ComprobarAdmision(ByVal tipo As String) As Boolean
        Return _definiciones.Any(Function(tipoAdmitido) tipoAdmitido = tipo)
    End Function

    Public Sub New(ByVal nombre As String, ByVal ejecutable As String)
        If EjecutableExiste(ejecutable) Then
            Me.Nombre = nombre
            Me.Ejecutable = ejecutable
        End If
    End Sub
End Class
